// source --> https://www.companio.ch/wp-content/plugins/woocommerce_datatranscw/resources/js/frontend.js?ver=4.9.8 (function ($) { var isSubmitted = false; var CheckoutObject = { cssClass: '', successCallback: '', placeOrder: function() { var form = $('form.checkout'); var form_data = form.data(); // WGM: Back Button if($("input[name=cw-wgm-button-back]").length > 0) { return true; } //WGM: MultiStep if($("input[name=wc_gzdp_step_submit]").length > 0) { if($("input[name=wc_gzdp_step_submit]").val() == "address"){ return true; } } var selectedPaymentMethodElement = $('input:radio[name=payment_method]:checked'); var selectedPaymentMethod = selectedPaymentMethodElement.val(); var secondRun = false; if($("input[name=datatranscw_payment_method_choice]").length > 0) { secondRun = true; selectedPaymentMethodElement = $("input[name=datatranscw_payment_method_choice]"); selectedPaymentMethod = selectedPaymentMethodElement.val(); } var moduleName = 'datatranscw'; var selectedModuleName = (selectedPaymentMethod != undefined) ? selectedPaymentMethod.toLowerCase().substring(0, moduleName.length) : ''; onDatatransCwCheckoutPlaceObject = this; if (moduleName == selectedModuleName) { form.addClass('processing'); if ( form_data["blockUI.isBlocked"] != 1 ) { form.block({ message: null, overlayCSS: { background: '#fff', opacity: 0.6 } }); } this.successCallback = previewAuthorization; this.cssClass = 'datatranscw-preview-fields'; onDatatransCwCheckoutPlaceObject = this; if(secondRun) { this.generateOrder(form, selectedPaymentMethod); return false; } var validateFunctionName = 'cwValidateFields'+selectedPaymentMethod.toLowerCase(); var validateFunction = window[validateFunctionName]; if (typeof validateFunction != 'undefined') { validateFunction(function(valid){onDatatransCwCheckoutPlaceObject.successCall();}, function(errors, valid){onDatatransCwCheckoutPlaceObject.failureCall(errors, valid);}); return false; } onDatatransCwCheckoutPlaceObject.successCall(); return false; } }, failureCall: function(errors, valid){ alert(errors[Object.keys(errors)[0]]); var form = $('form.checkout'); form.removeClass('processing').unblock(); form.find( '.input-text, select' ).blur(); }, successCall : function(){ var form = $('form.checkout'); var selectedPaymentMethodElement = $('input:radio[name=payment_method]:checked'); var selectedPaymentMethod = selectedPaymentMethodElement.val(); onDatatransCwCheckoutPlaceObject = this; if(selectedPaymentMethodElement.parents('li').find('.datatranscw-validate').length > 0){ var ajaxUrl; if(typeof wc_checkout_params != 'undefined') { ajaxUrl = wc_checkout_params.ajax_url; } if(typeof checkoutUrl == 'undefined') { ajaxUrl = woocommerce_params.ajax_url; } var separator = ajaxUrl.indexOf('?') !== -1 ? "&" : "?"; ajaxUrl = ajaxUrl+separator+"action=woocommerce_datatranscw_validate_payment_form"; var inputData = getFormFieldValues('datatranscw-preview-fields', selectedPaymentMethod.toLowerCase()); var postData = "&"; $.each(inputData, function(key, value) { postData += encodeURIComponent(key)+"="+encodeURIComponent(value)+"&"; }); $.ajax({ type: 'POST', url: ajaxUrl, data: form.serialize()+postData+ onDatatransCwCheckoutPlaceObject.cssClass + "=true", success: function( code ) { var response = ''; try { response = $.parseJSON(code); if ( response.result == 'success' ) { onDatatransCwCheckoutPlaceObject.generateOrder(form, selectedPaymentMethod); return false; } else if ( response.result == 'failure' ) { throw 'Result failure'; } else { throw 'Invalid response'; } } catch(err ){ // Remove old errors $( '.woocommerce-error, .woocommerce-message' ).remove(); // Add new errors if ( response.message ) { form.prepend(response.message); } else { form.prepend(code); } // Cancel processing form.removeClass( 'processing' ).unblock(); // Lose focus for all fields form.find( '.input-text, select' ).blur(); // Scroll to top $( 'html, body' ).animate({ scrollTop: ( $( 'form.checkout' ).offset().top - 100 ) }, 1000 ); } }, dataType: 'html' }); return false; } else { onDatatransCwCheckoutPlaceObject.generateOrder(form, selectedPaymentMethod); return false; } }, generateOrder: function(form, selectedPaymentMethod) { onDatatransCwCheckoutPlaceObject = this; var checkoutUrl; if(typeof wc_checkout_params != 'undefined') { checkoutUrl = wc_checkout_params.checkout_url; } if(typeof checkoutUrl == 'undefined') { checkoutUrl = woocommerce_params.checkout_url; } $.ajax({ type: 'POST', url: checkoutUrl, data: form.serialize() + "&" + onDatatransCwCheckoutPlaceObject.cssClass + "=true", success: function( code ) { var response = ''; try { if (code.indexOf("") >= 0) { code = code.split("")[1]; } if (code.indexOf("") >= 0) { code = code.split("")[0]; } try { // Check for valid JSON response = $.parseJSON( code ); } catch ( e ) { // Attempt to fix the malformed JSON var validJson = code.match( /{"result.*"}/ ); if ( null === validJson ) { throw 'Invalid response'; } else { response = $.parseJSON(validJson[0]); } } if ( response.result == 'success' ) { onDatatransCwCheckoutPlaceObject.successCallback(response, selectedPaymentMethod); } else if ( response.result == 'failure' ) { throw 'Result failure'; } else { throw 'Invalid response'; } } catch( err ) { if ( response.reload === 'true' ) { window.location.reload(); return; } // Remove old errors $( '.woocommerce-error, .woocommerce-message' ).remove(); // Add new errors if ( response.messages ) { form.prepend( response.messages ); } else { form.prepend( code ); } // Cancel processing form.removeClass( 'processing' ).unblock(); // Lose focus for all fields form.find( '.input-text, select' ).blur(); // Scroll to top $( 'html, body' ).animate({ scrollTop: ( $( 'form.checkout' ).offset().top - 100 ) }, 1000 ); // Trigger update in case we need a fresh nonce if ( response.refresh === 'true' ) { $( 'body' ).trigger( 'update_checkout' ); } $( 'body' ).trigger( 'checkout_error' ); } }, dataType: 'html' }); }, }; var getFormFieldValues = function(parentCssClass, paymentMethodPrefix) { var output = {}; $('.' + parentCssClass + ' *[data-field-name]').each(function (element) { var name = $(this).attr('data-field-name'); if(name.lastIndexOf(paymentMethodPrefix, 0) === 0) { name = name.substring(paymentMethodPrefix.length); name = name.substring(1, name.length -1 ); if(this.type == "radio") { if(this.checked) { output[name] = $(this).val(); } } else{ output[name] = $(this).val(); } } }); return output; }; var generateHiddenFields = function(data) { var output = ''; $.each(data, function(key, value) { output += ''; }); return output; }; var removeNameAttributes= function(cssClass) { // Remove name attribute to prevent submitting the data $('.' + cssClass + ' *[name]').each(function (element) { $(this).attr('data-field-name', $(this).attr('name')); if($(this).is(':radio')){ return true; } $(this).removeAttr('name'); }); } var addAlias = function(cssClass){ // Add listener for alias Transaction selector $('.' + cssClass).parents('li').find('.datatranscw-alias-input-box > select').bind('change', function() { $('body').trigger('update_checkout'); }); } var registerCheckoutObject = function(){ bindOrderConfirmEvent(CheckoutObject); }; var bindOrderConfirmEvent = function (CheckoutObject) { var form = $('form.checkout'); var attached = form.attr('data-datatranscw-attached'); if (attached != 'true') { form.attr('data-datatranscw-attached', 'true'); form.bind('checkout_place_order', function() { return CheckoutObject.placeOrder(); }); return false; } }; // We have to make sure that the JS in the response is executed. $( document ).ready(function() { if (typeof window['force_js_execution_on_form_update_listener'] === 'undefined') { window['force_js_execution_on_form_update_listener'] = true; $('body').bind('updated_checkout', function() { removeNameAttributes('datatranscw-preview-fields'); addAlias('datatranscw-preview-fields'); if ($('.datatranscw-preview-fields').length > 0) { registerCheckoutObject(); } }); } }); $( document ).ajaxStop(function(event, xhr, settings) { removeNameAttributes('datatranscw-preview-fields'); addAlias('datatranscw-preview-fields'); if ($('.datatranscw-preview-fields').length > 0) { registerCheckoutObject(); } }); var previewAuthorization = function (result, selectedPaymentMethod) { if(typeof result.redirect !== 'undefined') { var additionalFields = $(''); $('.' + 'datatranscw-preview-fields' + ' *[data-field-name]').each(function (element) { var name = $(this).attr('data-field-name'); if(name.lastIndexOf(selectedPaymentMethod.toLowerCase(), 0) === 0) { $(additionalFields).append($(this)); } }); var redirectUrl; if ( result.redirect.indexOf( "https://" ) != -1 || result.redirect.indexOf( "http://" ) != -1 ) { redirectUrl = result.redirect; } else { redirectUrl = decodeURI( result.redirect ); } $.get(redirectUrl, function(data){ var newBodyString = data.replace(/^[\S\s]*]*?>/i, "").replace(/<\/body[\S\s]*$/i, ""); var newBody = $("
").html(newBodyString); if(newBody.find('.wgm-go-back-button').length > 0){ $('body').html(newBody.html()); $('form.checkout').append(additionalFields); $('form.checkout').append(''); $('.wgm-go-back-button').on('click', function() { $('form.checkout').append(''); }); $('form.checkout').on('submit', function(){ return CheckoutObject.placeOrder(); }); $("html, body").animate({ scrollTop: $("form.checkout").offset().top - 100 }, 1e3); } else { window.location = decodeURI( redirectUrl ); } }); } else if(typeof result.ajaxScriptUrl !== 'undefined'){ $.getScript(result.ajaxScriptUrl, function() { eval("var callbackFunction = " + result.submitCallbackFunction); callbackFunction(getFormFieldValues('datatranscw-preview-fields', selectedPaymentMethod.toLowerCase())); }); } else { var newForm = '
'; newForm += result.hidden_form_fields; newForm += generateHiddenFields(getFormFieldValues('datatranscw-preview-fields', selectedPaymentMethod.toLowerCase())); newForm += '
'; $('body').append(newForm); $('#datatranscw_preview_form').submit(); } } }(jQuery)); // source --> https://www.companio.ch/wp-content/themes/Divi-Child/wp-advanced-search-master/js/scripts.js?ver=1 // Global constants var __WPAS = { FORM : "#wp-advanced-search.wpas-ajax-enabled", CONTAINER : "#wpas-results", INNER : "#wpas-results-inner", DEBUG_CONTAINER : "#wpas-debug", PAGE_FIELD : "#wpas-paged", FORM_ID: "", KEY_PREFIX: "wpasInstance_", HASH: "", STORAGE_KEY: function() { return this.KEY_PREFIX + this.FORM_ID; } }; jQuery(document).ready(function($) { __WPAS.FORM_ID = $('#wpas-id').val(); __WPAS.HASH = $(__WPAS.FORM).data('ajax-url-hash'); var CURRENT_PAGE = 1; /** * Event listeners */ $('form.wpas-autosubmit :input').change(function() { $(this).parents('form').submit(); }); $('button.wpas-clear').click(function(e) { e.preventDefault(); $(this).parents('form').find(':input') .not(':button, :submit, :reset, :hidden') .val('') .removeAttr('checked') .removeAttr('selected'); $(this).parents('form.wpas-autosubmit').each(function() { $(this).submit(); return false; }); }); $('input.wpas-reset').click(function(e){ e.preventDefault(); $(this).parents('form')[0].reset(); $(this).parents('form.wpas-autosubmit').each(function() { $(this).submit(); return false; }); }); /** * AJAX Functionality */ if ($(__WPAS.FORM).length == 0) { log("No AJAX-enabled WPAS search form detected on page."); return; } if ($(__WPAS.CONTAINER).length == 0) { log("No container with ID #wpas-results found on page. Results cannot be shown"); return; } var DEBUG_ON = ($(__WPAS.FORM).hasClass('wpas-debug-enabled')) ? true : false; var SHOW_DEFAULT = ($(__WPAS.FORM).data('ajax-show-default')) ? true : false; var T = (DEBUG_ON) ? 500 : 0; if (DEBUG_ON && $(__WPAS.DEBUG_CONTAINER).length == 0) { log("WPAS_DEBUG is enabled but no container with ID #wpas-debug was found " + "on this page. Debug information cannot be shown."); return; } var ajaxLoader = { container: "wpas-load", load_btn: "wpas-load-btn", load_btn_text: "", load_img: "wpas-loading-img", load_img_url: "", init : function(form) { this.load_btn_text = $(form).data('ajax-button'); this.load_img_url = $(form).data('ajax-loading'); $(__WPAS.CONTAINER).append(this.create()); }, create: function() { var html = "
"; html += "
"; html += "
"; html += "
"; return html; }, showButton: function() { $('#'+this.load_btn).addClass('active').show(); }, hideButton: function() { $('#'+this.load_btn).removeClass('active').hide(); }, showImage: function() { $('#'+this.load_img).show(); }, hideImage: function() { $('#'+this.load_img).hide(); } }; $(__WPAS.CONTAINER).append("
"); ajaxLoader.init(__WPAS.FORM); var storage = null; if (window.location.hash.slice(1) == __WPAS.HASH) { storage = JSON.parse(localStorage.getItem("wpasInstance_"+__WPAS.FORM_ID)); } if (storage != null) { log("localStorage found"); loadInstance(); } else { setPage(1); setRequest($(__WPAS.FORM).serialize()); } if ($(__WPAS.CONTAINER).length != 0) { if (storage != null) { $(__WPAS.CONTAINER).html(storage.results); } else if (SHOW_DEFAULT) { // Show results by default if attribute is set sendRequest($(__WPAS.FORM).serialize(), CURRENT_PAGE); } } // Submits the form // Reset current page to 1 function submitForm(form) { setPage(1); var form_data = $(form).serialize(); setRequest(form_data); $(__WPAS.INNER).empty(); sendRequest(form_data, CURRENT_PAGE); } // Set AJAX request to fetch results // Appends results to the container function sendRequest(data, page) { ajaxLoader.hideButton(); ajaxLoader.showImage(); jQuery.ajax({ type: 'POST', url: WPAS_Ajax.ajaxurl, data: { action: 'wpas_ajax_load', page: page, form_data: data }, success: function(data, textStatus, XMLHttpRequest) { response = JSON.parse(data); setTimeout(function() { appendHTML(__WPAS.INNER, response.results); ajaxLoader.hideImage(); updateHTML(__WPAS.DEBUG_CONTAINER,response.debug); CURRENT_PAGE = response.current_page; var max_page = response.max_page; log("Current Page: "+CURRENT_PAGE+", Max Page: "+max_page); if (max_page == 0 || CURRENT_PAGE == max_page) { ajaxLoader.hideButton(); } else { ajaxLoader.showButton(); } window.location.hash = __WPAS.HASH; storeInstance(); unlockForm(); }, T); }, error: function(MLHttpRequest, textStatus, errorThrown){ console.log(errorThrown); } }); } function storeInstance() { var instance = { request: REQUEST_DATA, form: getFormValues(), results : getResults(), page: CURRENT_PAGE }; instance = JSON.stringify(instance); localStorage.setItem(__WPAS.STORAGE_KEY(), instance); } function addArrayValues(values, input) { var name = $(input).attr('name'); var value = $(input).val(); if (typeof values[name] == 'undefined') { values[name] = []; } if ($(input).is(":checked")) values[name].push(value); return values; } function getFormValues() { var values = {}; $(__WPAS.FORM).find(':input').not(':button, :submit, :reset').each(function() { if ($(this).attr('type') == 'checkbox') { values = addArrayValues(values, this) } else { values[$(this).attr('name')] = $(this).val(); } }); return values; } function getResults() { return $(__WPAS.CONTAINER).html(); } function loadInstance() { var instance = localStorage.getItem(__WPAS.STORAGE_KEY()); instance = JSON.parse(instance); if (instance == null) return; if (instance.form) loadForm(instance.form); if (instance.results) loadResults(instance.results); if (instance.page) setPage(instance.page); if (instance.request) setRequest(instance.request); } function loadForm(form_values) { $(__WPAS.FORM).find(':input').not(':button, :submit, :reset').each(function() { var value = form_values[$(this).attr('name')]; if ($(this).attr('type') == 'checkbox') { if (value.indexOf( $(this).val() ) >= 0) { $(this).prop('checked',true); } else { $(this).prop('checked',false); } } else { $(this).val(value); } }); } function loadResults(results) { $(__WPAS.CONTAINER).html(results); } function lockForm() { $(__WPAS.FORM).addClass('wpas-locked'); $(__WPAS.FORM).find('input:submit').attr('disabled', 'disabled'); } function formLocked() { return $(__WPAS.FORM).hasClass('wpas-locked'); } function unlockForm() { $(__WPAS.FORM).removeClass('wpas-locked'); $(__WPAS.FORM).find('input:submit').removeAttr('disabled'); } function appendHTML(el, content) { $(el).append(content); } function updateHTML(el, content) { $(el).html(content); } function setPage(pagenum) { CURRENT_PAGE = pagenum; $(__WPAS.PAGE_FIELD).val(pagenum); } function setRequest(request) { REQUEST_DATA = request; } function log(msg) { if (DEBUG_ON) console.log("WPAS: " + msg); } // AJAX Event Listeners $(__WPAS.FORM).submit(function(e) { e.preventDefault(); if (formLocked()) return; lockForm(); submitForm(this); }); $(document).on('click', '#'+ajaxLoader.load_btn+'.active', function(e){ setPage(parseInt(CURRENT_PAGE) + 1) sendRequest(REQUEST_DATA,CURRENT_PAGE); }); });